tomcat升级 URL中包含了非法字符访问400 错误 The valid characters are defined in RFC 7230 and RFC 3986

您所在的位置:网站首页 tomcat 中文url 400 tomcat升级 URL中包含了非法字符访问400 错误 The valid characters are defined in RFC 7230 and RFC 3986

tomcat升级 URL中包含了非法字符访问400 错误 The valid characters are defined in RFC 7230 and RFC 3986

2023-04-24 02:39| 来源: 网络整理| 查看: 265

1、因公司项目版本使用JDK及tomcat老旧,造成无法使用很多新引用中间件,所以提出升级JDk,以及tomcat

升级之后访问某些页面时出现一下报错:

问题原因定位到 tomcat7及以上版本会出现:URL中包含了非法字符 

2、解决方式:

 (1)url拦截量少的情况下,可以通过修改请求URL编码转化特殊字符,达到不被tomcat拦截效果

encodeURI() 用来encode整个URL,不会对下列字符进行编码:+ : / ; ?&。它只会对汉语等特殊字符进行编码  encodeURIComponent()  用来enode URL中想要传输的字符串,它会对所有url敏感字符进行encode 

  这里需要注意的一点,对于get请求的中文乱码问题,如果你没有在tomcat配置文件中设置编码格式,天真的

  想用request.setCharacterEncoding(“UTF-8”)来在后端设置后端的解码格式,这种方式对于get请求是无效的。

  同时有的小伙伴可能会想我们可以在项目的web.xml中设置编码过滤器。抱歉这种方式对于get请求也是无效的。  (2)如果拦截情况多则修改tomcat配置文件service.xml如下:

   relaxedQueryChars="[^]"

  这个配置,"[^]"表示请求url中 ^字符不被拦截,如果还有别的符号需要过滤,逗号隔开即可

  

3、另附RFC 3986 文档规定,Url中只允许出现的字符

英文字母(a-z,A-Z)、 数字(0-9)、 - _ . ~ 4个特殊字符 保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]

 素材巴巴,码巴巴



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3